package com.elitel.frame.base.service;

import com.elitel.frame.main.entity.CfgDb;
import com.elitel.frame.main.entity.SysProject;
import com.elitel.frame.main.entity.ext.ExtSysProject;
import com.elitel.frame.main.entity.ext.SysProjectExt;
import com.elitel.frame.main.entity.vo.PageRequestVo;
import com.elitel.frame.main.entity.vo.PageResponseVo;
import com.elitel.frame.main.entity.vo.ZTreeDataModelVo;

import java.util.List;

public interface SysProjectService {
  /**
   * <pre>getProjectList(分页条件查询)
   * @author：FanWenquan
   * @date：2017年11月21日 上午10:50:02
   * @param pr
   * @return</pre>
   */
  PageResponseVo<SysProject> getProjectList(PageRequestVo<SysProject> pr);

  /**
   * <pre>insertProjectConfig(添加工程配置)
   * @author：FanWenquan
   * @date：2017年11月21日 上午10:50:08
   * @param sysProject</pre>
   */
  void insertProjectConfig(ExtSysProject sysProject);

  /**
   * <pre>updateProjectConfig(修改工程配置)
   * @author：FanWenquan
   * @date：2017年11月21日 上午10:50:15
   * @param sysProject</pre>
   */
  void updateProjectConfig(ExtSysProject sysProject);

  /**
   * <pre>deleteProjectConfig(批量删除工程配置)
   * @author：FanWenquan
   * @date：2017年11月21日 上午10:50:24
   * @param guids</pre>
   */
  void deleteProjectConfig(List<String> list, String pcode);

  /**
   * <pre>getProjectByPcode(根据项目编码获取项目配置)
   * @author：FanWenquan
   * @date：2017年11月21日 上午10:57:38
   * @param pcode
   * @return</pre>
   */
  List<SysProject> getProjectByPcode(String pcode);

  /**
   * <pre>getProjectConfigByGuid(根据主键获取工程配置信息)
   * @author：FanWenquan
   * @date：2017年11月21日 下午12:03:12
   * @param guid
   * @return</pre>
   */
  ExtSysProject getProjectConfigByGuid(String guid);

  /**
   * <pre>getProjectTreeList(获取所的工程---树)
   * @author：FanWenquan
   * @date：2017年11月21日 下午4:31:37
   * @return</pre>
   */
  List<ZTreeDataModelVo> getProjectTreeList();

  /**
   * <pre>getProjectServerTreeList(获取工程服务树)
   * @author：FanWenquan
   * @date：2017年11月27日 上午11:52:56
   * @return</pre>
   */
  List<ZTreeDataModelVo> getProjectServerTreeList();

  /**
   * show 查询所有项目信息及所配置的服务数量
   *
   * @return SysProjectExt集合
   * @author guoyanfei
   * @date 2017/12/11
   */
  List<SysProjectExt> getProjectExtList();

  /**
   * show 查询没有配置非结构化文档的项目信息 created by guoyanfei on 2018/04/17
   *
   * @return SysProject实体list集合
   */
  List<SysProject> selectPronotinDocument();

  /**
   * 根据 Pcode 获取 数据源
   *
   * @param pcode
   * @return
   */
  List<CfgDb> selectDataSourceByProject(String pcode);

  /**
   * 根据用户登录名获取项目列表
   *
   * @param loginname
   * @return
   */
  List<SysProject> selectDataSourceByLoginName(String loginname);
}
